﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using Joel.Vishnu.Modelo.Entidades;
using Joel.Vishnu.AccesoDatos.Interfaces;
using Joel.Vishnu.AccesoDatos.SQL_Server;

namespace Joel.Vishnu.Repositorios
{
    public class RepositorioEstadoCivil : RepositorioEntidad<EstadoCivil, Int32>
    {
        #region Constructores

        public RepositorioEstadoCivil()
            : base()
        {
            servicioDatosEstadoCivil = new ServicioDatosEstadoCivil();
        }

        #endregion

        #region Atributos

        private IServicioDatosEstadoCivil servicioDatosEstadoCivil;

        #endregion

        #region Propiedades

        private IServicioDatosEstadoCivil ServicioDatosEstadoCivil
        {
            get { return servicioDatosEstadoCivil; }
        }

        #endregion

        #region Metodos

        protected override EstadoCivil FilaAEntidad(DataRow fila)
        {
            var estadoCivil = new EstadoCivil();
            estadoCivil.Id = (Int32)fila["EstadoCivilId"];
            estadoCivil.Nombre = (String)fila["Nombre"];
            return estadoCivil;
        }
        
        public override EstadoCivil DevolverPorId(Int32 id)
        {
            var entidad = entidades.Where(x => x.Id == id).FirstOrDefault();
            if (entidad == null)
                using(var ds = ServicioDatosEstadoCivil.EstadosCiviles_DevolverPorId(id))
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        entidad = FilaAEntidad(ds.Tables[0].Rows[0]);
                        entidades.Add(entidad);
                    }
            return entidad;
        }

        public List<EstadoCivil> DevolverTodos()
        {
            using (var ds = ServicioDatosEstadoCivil.EstadosCiviles_DevolverTodos())
                entidades = TablaALista(ds.Tables[0]);
            return entidades;
        }

        #endregion
    }
}
